package IU;

import Controladores.CtrlArea;
import Controladores.CtrlModulo;
import Controladores.CtrlRol;
import Controladores.CtrlRolAreaModulo;
import Entidades.Area;
import Entidades.Modulo;
import Entidades.Rol;
import Entidades.Rolareamodulo;
//import Entidades.Proveedorproducto;
import java.util.List;
import java.util.Vector;
import javax.swing.JOptionPane;
import utiles.Validador;

public class ABMArea extends javax.swing.JFrame {

    private String nombreArea, fechaAlta, fechaBaja;
    Area area;
    TablaPersonalizada tableModel;
    private List listaA;
    private List listaM;
    private List listaR;
    private List listaRAM;
    CtrlArea controladorArea;
    CtrlModulo controladorModulo;
    CtrlRol controladorRol;
    CtrlRolAreaModulo controladorRolAreaModulo;
    Validador validador;
    Vector estasAreas = new Vector();

    public ABMArea(String o) {
        initComponents();
        String operario = o;
        jTextFieldUsuario5.setText(operario);
        controladorArea = new CtrlArea();
        controladorModulo = new CtrlModulo();
        controladorRol = new CtrlRol();
        controladorRolAreaModulo = new CtrlRolAreaModulo();
        //MODIFICAR/ELIMINAR: cargar jtableareas
        cargarTabla();
        //LISTAR Area: jcomboboxnombrearea
        //cargarComboAreas();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jPanel5 = new javax.swing.JPanel();
        jTextFieldNombreArea = new javax.swing.JTextField();
        jLabel12NombreArea = new javax.swing.JLabel();
        jButtonGuardar = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        jScrollPane3 = new javax.swing.JScrollPane();
        jTableAreas = new javax.swing.JTable();
        jPanel4 = new javax.swing.JPanel();
        eliminar = new javax.swing.JButton();
        modificar = new javax.swing.JButton();
        jLabel14NombreArea = new javax.swing.JLabel();
        jTextFieldNombre = new javax.swing.JTextField();
        jPanel3 = new javax.swing.JPanel();
        jScrollPane5 = new javax.swing.JScrollPane();
        ButtBuscar = new javax.swing.JPanel();
        jScrollPane7 = new javax.swing.JScrollPane();
        jScrollPane4 = new javax.swing.JScrollPane();
        jTableAreasListar = new javax.swing.JTable();
        jButtonSalir = new javax.swing.JButton();
        jPanel18 = new javax.swing.JPanel();
        jTextFieldUsuario5 = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Gestionar Áreas - Sistema Gestor de Pesaje para Bodegas");

        jTabbedPane1.setForeground(new java.awt.Color(102, 0, 102));
        jTabbedPane1.setFont(new java.awt.Font("Segoe UI", 3, 12)); // NOI18N

        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Area:", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 3, 12), new java.awt.Color(102, 0, 102))); // NOI18N
        jPanel5.setFont(new java.awt.Font("Segoe UI", 3, 12)); // NOI18N

        jTextFieldNombreArea.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

        jLabel12NombreArea.setFont(new java.awt.Font("Segoe UI", 1, 11)); // NOI18N
        jLabel12NombreArea.setText("Nombre:");

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel12NombreArea)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
                .addComponent(jTextFieldNombreArea, javax.swing.GroupLayout.PREFERRED_SIZE, 400, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(20, 20, 20))
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addGap(45, 45, 45)
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextFieldNombreArea, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel12NombreArea))
                .addContainerGap(64, Short.MAX_VALUE))
        );

        jButtonGuardar.setFont(new java.awt.Font("Segoe UI", 3, 12)); // NOI18N
        jButtonGuardar.setForeground(new java.awt.Color(102, 0, 102));
        jButtonGuardar.setText("Guardar");
        jButtonGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonGuardarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(64, 64, 64)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButtonGuardar))
                .addContainerGap(72, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(64, 64, 64)
                .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(88, 88, 88)
                .addComponent(jButtonGuardar)
                .addContainerGap(39, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Alta Área", jPanel1);

        jScrollPane2.setAutoscrolls(true);

        jTableAreas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Nombre de Áreas", "Fecha de Baja"
            }
        ));
        jTableAreas.setAutoscrolls(false);
        jTableAreas.setFillsViewportHeight(true);
        jTableAreas.setMinimumSize(new java.awt.Dimension(55, 55));
        jTableAreas.setPreferredSize(new java.awt.Dimension(200, 42));
        jTableAreas.setRowHeight(14);
        jTableAreas.getTableHeader().setResizingAllowed(false);
        jTableAreas.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTableAreasMouseClicked(evt);
            }
        });
        jScrollPane3.setViewportView(jTableAreas);

        jScrollPane2.setViewportView(jScrollPane3);

        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Datos:", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 3, 12), new java.awt.Color(102, 0, 102))); // NOI18N

        eliminar.setFont(new java.awt.Font("Segoe UI", 3, 12)); // NOI18N
        eliminar.setForeground(new java.awt.Color(102, 0, 102));
        eliminar.setText("Eliminar");
        eliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                eliminarActionPerformed(evt);
            }
        });

        modificar.setFont(new java.awt.Font("Segoe UI", 3, 12)); // NOI18N
        modificar.setForeground(new java.awt.Color(102, 0, 102));
        modificar.setText("Modificar");
        modificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                modificarActionPerformed(evt);
            }
        });

        jLabel14NombreArea.setFont(new java.awt.Font("Segoe UI", 1, 11)); // NOI18N
        jLabel14NombreArea.setText("Nombre:");

        jTextFieldNombre.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(modificar)
                        .addGap(32, 32, 32)
                        .addComponent(eliminar))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addGap(53, 53, 53)
                        .addComponent(jLabel14NombreArea)
                        .addGap(50, 50, 50)
                        .addComponent(jTextFieldNombre, javax.swing.GroupLayout.DEFAULT_SIZE, 419, Short.MAX_VALUE)))
                .addGap(47, 47, 47))
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addGap(38, 38, 38)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel14NombreArea, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 77, Short.MAX_VALUE)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(modificar)
                    .addComponent(eliminar))
                .addGap(21, 21, 21))
        );

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(59, 59, 59)
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 523, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Modificar/Eliminar Área", jPanel2);

        jScrollPane5.setAutoscrolls(true);

        ButtBuscar.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Datos de Áreas", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 3, 12), new java.awt.Color(102, 0, 51))); // NOI18N
        ButtBuscar.setForeground(new java.awt.Color(102, 0, 102));
        ButtBuscar.setFont(new java.awt.Font("Segoe UI", 3, 12)); // NOI18N

        jScrollPane7.setAutoscrolls(true);

        jTableAreasListar.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Nombre de Áreas", "Fecha de Baja"
            }
        ));
        jTableAreasListar.setAutoscrolls(false);
        jTableAreasListar.setFillsViewportHeight(true);
        jTableAreasListar.setMinimumSize(new java.awt.Dimension(55, 55));
        jTableAreasListar.setPreferredSize(new java.awt.Dimension(200, 42));
        jTableAreasListar.setRowHeight(14);
        jTableAreasListar.getTableHeader().setResizingAllowed(false);
        jTableAreasListar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTableAreasListarMouseClicked(evt);
            }
        });
        jScrollPane4.setViewportView(jTableAreasListar);

        jScrollPane7.setViewportView(jScrollPane4);

        javax.swing.GroupLayout ButtBuscarLayout = new javax.swing.GroupLayout(ButtBuscar);
        ButtBuscar.setLayout(ButtBuscarLayout);
        ButtBuscarLayout.setHorizontalGroup(
            ButtBuscarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ButtBuscarLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE, 481, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(82, Short.MAX_VALUE))
        );
        ButtBuscarLayout.setVerticalGroup(
            ButtBuscarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ButtBuscarLayout.createSequentialGroup()
                .addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE, 279, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(159, Short.MAX_VALUE))
        );

        jScrollPane5.setViewportView(ButtBuscar);

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 531, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(101, Short.MAX_VALUE))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addGap(21, 21, 21)
                .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 330, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(20, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Listar Áreas", jPanel3);

        jButtonSalir.setFont(new java.awt.Font("Segoe UI", 3, 12)); // NOI18N
        jButtonSalir.setForeground(new java.awt.Color(102, 0, 102));
        jButtonSalir.setText("Salir");
        jButtonSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonSalirActionPerformed(evt);
            }
        });

        jPanel18.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Usuario Registrado", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 3, 11), new java.awt.Color(102, 0, 102))); // NOI18N
        jPanel18.setForeground(new java.awt.Color(102, 0, 102));

        jTextFieldUsuario5.setEditable(false);
        jTextFieldUsuario5.setFont(new java.awt.Font("Segoe UI", 1, 11));
        jTextFieldUsuario5.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
        jTextFieldUsuario5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldUsuario5ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel18Layout = new javax.swing.GroupLayout(jPanel18);
        jPanel18.setLayout(jPanel18Layout);
        jPanel18Layout.setHorizontalGroup(
            jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel18Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTextFieldUsuario5, javax.swing.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel18Layout.setVerticalGroup(
            jPanel18Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel18Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTextFieldUsuario5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(28, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 647, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jPanel18, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(24, 24, 24))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(790, Short.MAX_VALUE)
                .addComponent(jButtonSalir)
                .addGap(50, 50, 50))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 401, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(19, 19, 19)
                        .addComponent(jPanel18, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(37, 37, 37)
                .addComponent(jButtonSalir)
                .addContainerGap(24, Short.MAX_VALUE))
        );

        jTabbedPane1.getAccessibleContext().setAccessibleName("Alta Área");

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-915)/2, (screenSize.height-523)/2, 915, 523);
    }// </editor-fold>//GEN-END:initComponents

    private void refresh() {
        jTextFieldNombreArea.setText("");
    }

private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSalirActionPerformed
    this.dispose();
}//GEN-LAST:event_jButtonSalirActionPerformed

private void modificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_modificarActionPerformed
    int ind = jTableAreas.getSelectedRow();
    if (ind < 0) {
        JOptionPane.showMessageDialog(this, "Debe seleccionar un Área para modificar", "Modificar Área", JOptionPane.INFORMATION_MESSAGE);
    } else {
        nombreArea = jTextFieldNombre.getText();
//        fechaBaja = jTextFieldFechaBajaArea.getText();
        area = (Area) listaA.get(ind);
        String nombreAreaOriginal = area.getNombreArea();
        if( !nombreAreaOriginal.equals(nombreArea)){
            if (verificar(nombreArea) && (Validador.getInstance().esFechaValida(fechaBaja) || fechaBaja.equals(""))) {//Validador.getInstance().obtenerFechaSistema();//validador.getInstance().soloContieneLetrasYEspacios(nombre)
                area.setNombreArea(nombreArea);
                area.setFechaFin(fechaBaja);
                try {
                    controladorArea.modificarArea(area);
                    JOptionPane.showMessageDialog(this, "La modificación fue realizada de forma Exitosa", "Modificar área", JOptionPane.INFORMATION_MESSAGE);
                    cargarTabla();
                    //cargarComboAreas();
                    limpiarCampos();
                } catch (Exception e) {
                    ////System.out.println(e);
                    ////System.out.println("No se pudo modificar el área");
                }
            }
        }
        else{
            if ( Validador.getInstance().esFechaValida(fechaBaja) || fechaBaja.equals("")) {//Validador.getInstance().obtenerFechaSistema();//validador.getInstance().soloContieneLetrasYEspacios(nombre)
                //area.setNombreArea(nombreArea);
                area.setFechaFin(fechaBaja);
                try {
                    controladorArea.modificarArea(area);
                    JOptionPane.showMessageDialog(this, "La modificación fue realizada de forma Exitosa", "Modificar área", JOptionPane.INFORMATION_MESSAGE);
                    cargarTabla();
                    //cargarComboAreas();
                    limpiarCampos();
                } catch (Exception e) {
                    ////System.out.println(e);
                    ////System.out.println("No se pudo modificar el área");
                }
            }
        }
    }
}//GEN-LAST:event_modificarActionPerformed

private void eliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_eliminarActionPerformed
    int ind = jTableAreas.getSelectedRow();
    if (ind < 0) {
        JOptionPane.showMessageDialog(this, "Debe seleccionar un Área para eliminar", "Eliminar Área", JOptionPane.INFORMATION_MESSAGE);
    } else {
        //nombreArea = jTextFieldNombre.getText();
        area = (Area) listaA.get(ind);
        jTextFieldNombre.setText(area.getNombreArea());//esto lo hago por q si 1º intenté modificar el nombre y no pude, es p q me vuelva a poner el nombre original de la tabla, q es el q voy a eliminar
//        jTextFieldFechaBajaArea.setText(area.getFechaFin());//esto lo hago por q si 1º intenté modificar la fecha fin y no pude, es p q me vuelva a poner la fecha fin original de la tabla, q es la q voy a intentar eliminar
        //////////////////////////////////////////////////////////
        //if(area.getFechaFin() == ""){//si el area no tiene fecha de baja entonces la puedo dar de baja
        int rta = JOptionPane.showConfirmDialog(this, "Está seguro que desea ELIMINAR el Área:\n " + area.getNombreArea() + " ?", "Eliminar Área", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
        if (rta == 0) {
            fechaBaja = Validador.getInstance().obtenerFechaSistema();
            ////System.out.println("La fecha de hoy es: " + fechaBaja);
            area.setFechaFin(fechaBaja);
            try {
                ////System.out.println("entro al try p modificar el area y asignarle fecha de baja");
                controladorArea.modificarArea(area);
                ////System.out.println("Eliminar: modifico el area y le asigno fecha de baja");
                //tengo q buscar todos los ram con el id del area modificada
                try {
                    ////System.out.println("entro al try p buscar todos los ram con idarea como la de baja");
                    listaRAM = controladorRolAreaModulo.buscarRolareamodulo_X_idRol_idArea_idModulo(null, area, null);
                    ////System.out.println("recupera todos los ram con idarea como la de baja");
                    for (int i = 0; i < listaRAM.size(); i++) {
                        ////System.out.println("entra al for p ir recuperando de a un ram con idarea como la de baja");
                        Rolareamodulo rolaremod = (Rolareamodulo) listaRAM.get(i);
                        rolaremod.setVisible(false);
                        try {
                            controladorRolAreaModulo.modificarRolAreaModulo(rolaremod);
                            ////System.out.println("Eliminar: modificó el rolareamodulo q tiene idarea como la de baja y le asigno visible false");
                        } catch (Exception e) {
                            ////System.out.println(e);
                            ////System.out.println("Eliminar: No se pudo modificar el rolareamodulo del ram con idarea como la de baja p asignarle visible false");
                        }
                    }
                } catch (Exception e) {
                    ////System.out.println(e);
                    ////System.out.println("No se pudieron recuperar los ram con idarea como la de baja");
                }
                /*try {
                    ////System.out.println("entro al try p buscar todos los modulos");
                    listaM = controladorModulo.buscarTodosModulo();
                    ////System.out.println("recupera todos los modulos");
                    for (int i = 0; i < listaM.size(); i++) {
                        ////System.out.println("entra al for p ir recuperando de a un modulo");
                        Modulo mo = (Modulo) listaM.get(i);
                        try {
                            ////System.out.println("entra al try p buscar todos los roles");
                            listaR = controladorRol.buscarTodosRol();
                            ////System.out.println("recupera todos los roles");
                            for (int j = 0; j < listaR.size(); j++) {
                                ////System.out.println("entra al for p ir recuperando de a un rol");
                                Rol ro = (Rol) listaR.get(j);
                                Rolareamodulo roarmo = new Rolareamodulo();
                                roarmo.setArea(area);
                                roarmo.setModulo(mo);
                                roarmo.setRol(ro);
                                roarmo.setVisible(false);
                                try {
                                    controladorRolAreaModulo.modificarRolAreaModulo(roarmo);
                                    ////System.out.println("modificó el rolareamodulo");
                                    //JOptionPane.showMessageDialog(this, "El nuevo rolareamodulo se ha guardado exitosamente", "Alta Área", JOptionPane.INFORMATION_MESSAGE);
                                } catch (Exception e) {
                                    ////System.out.println(e);
                                    ////System.out.println("No se pudo modificar el rolareamodulo");
                                }
                            }
                        } catch (Exception e) {
                            ////System.out.println(e);
                            ////System.out.println("No se pudieron recuperar los Roles");
                        }
                    }
                } catch (Exception e) {
                    ////System.out.println(e);
                    ////System.out.println("No se pudieron recuperar los Modulos");
                }*/
                JOptionPane.showMessageDialog(this, "La eliminación fue realizada de forma Exitosa", "Eliminar área", JOptionPane.INFORMATION_MESSAGE);
                cargarTabla();
                //cargarComboAreas();
                limpiarCampos();
            } catch (Exception e) {
                ////System.out.println(e);
                ////System.out.println("Eliminar: No se pudo modificar el área asignandole fecha baja");
            }
        }
        //////////////////////////////////////////////////////////
        //}else{JOptionPane.showMessageDialog(this, "El área seleccionada ya está de baja", "Eliminar área", JOptionPane.INFORMATION_MESSAGE);}//si el area tiene fecha de baja entonces no la puedo dar de baja
    }
}//GEN-LAST:event_eliminarActionPerformed

private void jTableAreasMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableAreasMouseClicked
    cargarCampos();
}//GEN-LAST:event_jTableAreasMouseClicked

private void jButtonGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonGuardarActionPerformed
    nombreArea = jTextFieldNombreArea.getText();
    fechaAlta = Validador.getInstance().obtenerFechaSistema();
    fechaBaja = "";
    if ((verificar(nombreArea))) {
        ////System.out.println("dentro del if, pasó el verificar");
        Area ar = new Area();
        ar.setNombreArea(nombreArea);
        ar.setFechaFin(fechaBaja);
        ////System.out.println("setea el nombre del area y la fecha baja " + nombreArea + ", " + fechaBaja) ;
        try {
            ////System.out.println("entra al try p guardar el area");
            controladorArea.guardarArea(ar);
            try {
                ////System.out.println("entra al try p buscar todos los modulos");
                listaM = controladorModulo.buscarTodosModulo();
                ////System.out.println("recupera todos los modulos");
                for (int i = 0; i < listaM.size(); i++) {
                    ////System.out.println("entra al for p ir recuperando de a un modulo");
                    Modulo mo = (Modulo) listaM.get(i);
                    try {
                        ////System.out.println("entra al try p buscar todos los roles");
                        listaR = controladorRol.buscarTodosRol();
                        ////System.out.println("recupera todos los roles");
                        for (int j = 0; j < listaR.size(); j++) {
                            ////System.out.println("entra al for p ir recuperando de a un rol");
                            Rol ro = (Rol) listaR.get(j);
                            Rolareamodulo roarmo = new Rolareamodulo();
                            roarmo.setArea(ar);
                            roarmo.setModulo(mo);
                            roarmo.setRol(ro);
                            roarmo.setVisible(false);
                            ////System.out.println("le asigna al ram el a, m, r y v" + roarmo.getArea().getNombreArea() + ", " + roarmo.getModulo().getNombreModulo() + ", " + roarmo.getRol().getNombreRol() + ", " + roarmo.getVisible());
                            try {
                                ////System.out.println("entra al try p guardar el ram");
                                controladorRolAreaModulo.guardarRolAreaModulo(roarmo);
                                ////System.out.println("guardó el rolareamodulo nuevo");
                                //JOptionPane.showMessageDialog(this, "El nuevo rolareamodulo se ha guardado exitosamente", "Alta Área", JOptionPane.INFORMATION_MESSAGE);
                            } catch (Exception e) {
                                ////System.out.println(e);
                                ////System.out.println("No se pudo guardar el rolareamodulo nuevo");
                            }
                        }
                    } catch (Exception e) {
                        ////System.out.println(e);
                        ////System.out.println("No se pudieron recuperar los Roles");
                    }
                }
            } catch (Exception e) {
                ////System.out.println(e);
                ////System.out.println("No se pudieron recuperar los Modulos");
            }
            ////System.out.println("guardó el area nueva");
            JOptionPane.showMessageDialog(this, "El nuevo área se ha guardado exitosamente", "Alta Área", JOptionPane.INFORMATION_MESSAGE);
        } catch (Exception e) {
            ////System.out.println(e);
            ////System.out.println("No se pudo guardar el área nueva");
        }
    }
    refresh();//se limpia el nombre nuevo
    cargarTabla();
    //cargarComboAreas();
}//GEN-LAST:event_jButtonGuardarActionPerformed

private void jTableAreasListarMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableAreasListarMouseClicked
    //cargarCampos();
}//GEN-LAST:event_jTableAreasListarMouseClicked

private void jTextFieldUsuario5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldUsuario5ActionPerformed
    // TODO add your handling code here:
}//GEN-LAST:event_jTextFieldUsuario5ActionPerformed

////////////////////////////ALTA Area////////////////////////////
    //al iniciar componentes, al guardar (alta), se carga este combo q está en la ficha LISTAR AREA: jcomboboxnombrearea
//lo voy a reemplazar por una tabla como la q hay en la ficha modificar/eliminar, donde se muestren los nombres y fechas baja (si tienen) de las áreas. o sea q va a ser un CargarTabla2
    private void cargarComboAreas(){
//        try {
//            listaA = controladorArea.buscarTodosArea();
//        } catch (Exception e) {
//            ////System.out.println(e);
//            ////System.out.println("No se pudieron recuperar las áreas");
//        }
//        jComboBoxNombreArea.removeAllItems();
//        for (int i = 0; i < listaA.size(); i++) {
//            Vector fila = new Vector();
//            Area ar = (Area) listaA.get(i);
//            fila.add(ar.getNombreArea());
//            jComboBoxNombreArea.addItem(fila.get(0));
//        }
    }

//MODIFICAR/ELIMINAR: boton modificar nombre 
    private void cargarCampos() {
        int fila = jTableAreas.getSelectedRow();
        Area a = new Area();
        a = (Area) listaA.get(fila);
        jTextFieldNombre.setText(a.getNombreArea());
//        jTextFieldFechaBajaArea.setText(a.getFechaFin());
    }

    //al iniciar componentes, al guardar (alta), al modificar y al eliminar cargo esta tabla q está en la ficha MODIFICAR/ELIMINAR: jtableareas
    private void cargarTabla() {
        String[] encabezados = new String[2];
        encabezados[0] = "Nombre Área";//Nombre de
        encabezados[1] = "Fecha Baja";
        tableModel = new TablaPersonalizada(encabezados);
        jTableAreas.setModel(tableModel);
        jTableAreasListar.setModel(tableModel);
        try {
            listaA = controladorArea.buscarTodosArea();
            ////System.out.println("tamaño de lista Areas" + listaA.size());
            for (int i = 0; i < listaA.size(); i++) {
                Vector fila = new Vector();
                Area ar = (Area) listaA.get(i);
                fila.add(ar.getNombreArea());
                fila.add(ar.getFechaFin());
                tableModel.addRow(fila);
            }
        } catch (Exception e) {
            ////System.out.println(e);
            ////System.out.println("No se pudieron recuperar las areas");
        }
    }

    //una vez q modifico u elimino limpio el text hasta q vuelva a seleccionar en la tabla
    private void limpiarCampos() {
        jTextFieldNombre.setText("");
//        jTextFieldFechaBajaArea.setText("");
    }
    
//MODIFICAR/ELIMINAR: boton eliminar
//LISTAR: boton buscar
//////////////////////////////////////////////
//este da error porque devuelve nulo ya que no hay ninguna provincia seleccionada da nul pointer exception    
/////////////////LISTAR////////////////////
//AGREGAR PROVEEDORES: boton guardar
//AGREGAR PROVEEDORES: boton eliminar
//////////////////LISTAR///////////////

    private boolean verificar(String nombre) {
        boolean ver = false;
        if ( nombre == null ? "" != null : nombre.equals("")) {
            JOptionPane.showMessageDialog(this, "Por favor ingrese nombre", "Error", JOptionPane.ERROR_MESSAGE);
       } else if (!validador.getInstance().soloContieneLetrasYEspacios(nombre)) {
            JOptionPane.showMessageDialog(this, "Nombre inválido: Ingrese sólo letras y espacios para nombre.", "Error", JOptionPane.ERROR_MESSAGE);
        } else if (repetido(nombre)) {
            JOptionPane.showMessageDialog(this, "El nombre ya está utilizado", "Error", JOptionPane.ERROR_MESSAGE);
        } else {
            ver = true;
        }
        return ver;
    }

    private boolean repetido(String nombre) {//si esta repetido devuelve true
        boolean estarepetido = false;
        Area operar = new Area();
        try {
            operar = controladorArea.buscarAreaNombre(nombre);
            estarepetido = true;
            ////System.out.println("Encontró el nombre en un elemento. operar.getnombrearea: " + operar.getNombreArea() + ", nombre comprobado de area nueva: " + nombre);
        } catch (Exception e) {
            ////System.out.println("No está repetido el mismo nombre en otro elemento. operar.getnombrearea: " + operar.getNombreArea() + ", nombre comprobado de area nueva: " + nombre);
        }
        return estarepetido;
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel ButtBuscar;
    private javax.swing.JButton eliminar;
    private javax.swing.JButton jButtonGuardar;
    private javax.swing.JButton jButtonSalir;
    private javax.swing.JLabel jLabel12NombreArea;
    private javax.swing.JLabel jLabel14NombreArea;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel18;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JScrollPane jScrollPane7;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTable jTableAreas;
    private javax.swing.JTable jTableAreasListar;
    private javax.swing.JTextField jTextFieldNombre;
    private javax.swing.JTextField jTextFieldNombreArea;
    private javax.swing.JTextField jTextFieldUsuario5;
    private javax.swing.JButton modificar;
    // End of variables declaration//GEN-END:variables

    ///////////////AGREGAR PROVEEDOR A PRODUCTO:
    private void cargarComboNombreProdAgregar() {
    }

    private void cargarComboRazonAgregar() {
    }

    /*private void mostrarEnLaTabla(Proveedorproducto pp) {
    }*/

    private void limpiarCamposProdAgregar() {
    }

    private void limpiarDatos() {
    }

    private void limpiatDatos() {
    }

    private void limpiarDatos1() {
    }
}
